<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!-- $Id: egg-core.html,v 1.25 2002/06/06 03:11:00 wcc Exp $ -->

<html>
  <head>
    <title>Eggdrop Documentation: Eggdrop Core</title>
  </head>

  <body>
    <div align="center">
      <p><strong>Eggdrop Core</strong></p>
    </div>
    <hr>

    <p>This file describes the syntax and all the settings of your Eggdrop
    configuration file. Please note that you don&#39;t need to set all of these
    variables to make your bot work properly.</p>
    <hr>

    <p><strong>Contents</strong></p>

    <blockquote>
      <ol>
        <li>
          <a href="#sect1">Configuration settings</a>

          <ol type="a">
            <li><a href="#sect1a">Executable path</a></li>

            <li><a href="#sect1b">Basic settings</a></li>

            <li><a href="#sect1c">Log files</a></li>

            <li><a href="#sect1d">Console</a></li>

            <li><a href="#sect1e">Files and directories</a></li>

            <li><a href="#sect1f">Botnet, DCC, and network</a></li>

            <li><a href="#sect1g">More advanced settings</a></li>

            <li><a href="#sect1h">Modules</a></li>

            <li><a href="#sect1i">Scripts</a></li>
          </ol>
        </li>
      </ol>
    </blockquote>
    <hr>

    <p><a name="sect1"></a>1. <strong>Configuration settings</strong></p>

    <p><a name="sect1a"></a>1a. <strong>Executable path</strong></p>

    <blockquote>
      <p>The first line in an Eggdrop configuration file should contain
      a fully qualified path to your Eggdrop executable. It has to be
      implemented in the way the example shows to make the config file
      work as a shell script.</p>

      <p>Example:</p>

      <p>#! /path/to/eggdrop</p>
    </blockquote>

    <p><a name="sect1b"></a>1b. <strong>Basic settings</strong></p>

    <blockquote>
      <p>You can change the basic Eggdrop appearance and behavior in this
      section.</p>
    </blockquote>

    <blockquote>
      <dl>
        <dt><strong>set username &quot;lamest&quot;</strong></dt>

        <dd>
          <p>This setting defines the username the bot uses on IRC. This
          setting has no effect if an ident daemon is running on your
          bot&#39;s machine.</p>
        </dd>

        <dt><strong>set admin &quot;Lamer &lt;email:
        lamer@lamest.lame.org&gt;&quot;</strong></dt>

        <dd>
          <p>This setting defines which contact person should be shown in
          .status, /msg help, and other places. You really should include
          this information.</p>
        </dd>

        <dt><strong>set network &quot;SomeIrcNetwork&quot;</strong></dt>

        <dd>
          <p>This setting is used only for info to share with others on your
          botnet. Set this to the IRC network your bot is connected to.</p>
        </dd>

        <dt><strong>set timezone &quot;EST&quot;</strong></dt>

        <dd>
          <p>This setting defines the timezone is your bot in. It&#39;s
          used for internal routines as well as for logfile timestamping
          and scripting purposes. The timezone string specifies the name of
          the timezone and must be three or more alphabetic characters. For
          example, Central European Time(UTC+1) should be &quot;CET&quot;.</p>
        </dd>

        <dt><strong>set offset &quot;5&quot;</strong></dt>

        <dd>
          <p>The offset setting specifies the time value to be added to the
          local time to get Coordinated Universal Time (UTC aka GMT). The
          offset is positive if the local timezone is west of the Prime
          Meridian and negative if it is east. The value (in hours) must be
          between -23 and 23. For example, if the timezone is UTC+1, the
          offset is -1.</p>
        </dd>

        <dt><strong>set env(TZ) &quot;$timezone $offset&quot; (disabled by
        default)</strong></dt>

        <dd>
          <p>If you don&#39;t want to use the timezone setting for scripting
          purposes only, but instead everywhere possible, then use this
          setting.</p>
        </dd>

        <dt><strong>set my-hostname &quot;virtual.host.com&quot;</strong></dt>
        <dt><strong>set my-ip &quot;99.99.0.0&quot;</strong></dt>

        <dd>
          <p>If you&#39;re using virtual hosting (your machine has more
          than 1 IP), you may want to specify the particular IP to bind to.
          You can specify either by hostname or by IP. You may also want to
          set the hostname here if Eggdrop has trouble detecting it when it
          starts up.</p>
        </dd>

        <dt><strong>addlang &quot;english&quot;</strong></dt>

        <dd>
          <p>If you want to have your Eggdrop messages displayed in another
          language, change this command to match your preferences. An
          alternative would be to set the environment variable EGG_LANG to
          that value.</p>
        </dd>
      </dl>
    </blockquote>

    <p><a name="sect1c"></a>1c. <strong>Log files</strong></p>

    <p>Eggdrop is capable of logging various things, from channel chatter to
    partyline commands and file transfers.</p>

    <p>Logfiles are normally kept for 24 hours. Afterwards, they will be
    renamed to &quot;(logfilename).yesterday&quot;. After 48 hours, they
    will be overwritten be the logfile of the next day.</p>

    <blockquote>
      <dl>
        <dt><strong>set max-logs 5</strong></dt>

        <dd>
          <p>This is the maximum number of logfiles allowed. This setting
          can be increased; however, don&#39;t decrease it.</p>
        </dd>

        <dt><strong>set max-logsize 0</strong></dt>

        <dd>
          <p>This is the maximum size of your logfiles. Set it to 0 to
          disable. This value is in kilobytes, so &#39;550&#39; would mean
          cycle logs when it reaches the size of 550 kilobytes. Note that
          this only works if you have keep-all-logs set to 0 (OFF).</p>
        </dd>

        <dt><strong>set quick-logs 0</strong></dt>

        <dd>
          <p>This could be good if you have had a problem with logfiles
          filling your quota/hard disk or if you log +p and publish it
          to the web, and you need more up-to-date info. Note that this
          setting might increase the CPU usage of your bot (on the other
          hand it will decrease your RAM usage).</p>
        </dd>

        <dt><strong>logfile &lt;logflags&gt; &lt;channel&gt;
        &quot;logs/logfile&quot;</strong></dt>

        <dd>
          <p>This setting tells the bot what should be logged, from where,
          and to which file.</p>

          <p>The most common log file flags are:</p>

          <p>m private msgs/ctcps to the bot<br>
           k kicks, bans, mode changes on the channel<br>
           j joins, parts, netsplits on the channel<br>
           p public chatter on the channel<br>
           s server connects/disconnects/notices<br>
           b information about bot linking and userfile sharing<br>
           c commands people use (via msg or dcc)<br>
           x file transfers and file-area commands<br>
           r (if use-console-r enabled) EVERYTHING sent to the bot by the
          server<br>
           o other: misc info, errors -- IMPORTANT STUFF<br>
           w wallops: msgs between IRCops (be sure to set the bot +w in
          init-server)</p>

          <p>There are others, but you probably shouldn&#39;t log them,
          it&#39;d be rather unethical ;). There are also eight user-defined
          levels (1-8) which are used by Tcl scripts.</p>

          <p>Each logfile belongs to a certain channel. Events of type
          &#39;k&#39;, &#39;j&#39;, and &#39;p&#39; are logged to whatever
          channel they happened on. Most other events are currently logged
          to every channel. You can make a logfile belong to all channels
          by assigning it to channel &quot;*&quot;</p>

          <p>Examples:</p>

          <p><strong>logfile mco * &quot;logs/eggdrop.log&quot;<br>
          logfile jpk #lamest &quot;logs/lamest.log&quot;<br></strong></p>

          <p>In &#39;eggdrop.log&#39;, put private msgs/ctcps, commands,
          misc info, and errors from any channel.</p>

          <p>In &#39;lamest.log&#39;, log all joins, parts, kicks, bans,
          public chatter, and mode changes from #lamest.</p>
        </dd>

        <dt><strong>set log-time 1</strong></dt>

        <dd>
          <p>Use this feature to timestamp entries in the log file.</p>
        </dd>

        <dt><strong>set keep-all-logs 0</strong></dt>

        <dd>
          <p>If you want to keep your logfiles forever, turn this setting
          on. All logfiles will get the suffix ".[day, 2 digits][month, 3
          letters][year, 4 digits]". Note that your quota/hard-disk might
          be filled by this, so check your logfiles often and download
          them.</p>
        </dd>

        <dt><strong>set switch-logfiles-at 300</strong></dt>

        <dd>
          <p>You can specify when Eggdrop should switch logfiles and start
          fresh. You must use military time for this setting. 300 is the
          default, and describes 03:00 (AM).</p>
        </dd>

        <dt><strong>set quiet-save 0</strong></dt>

        <dd>
          <p>Those nasty &quot;Writing user file...&quot; and &quot;Writing
          channel file...&quot; messages won&#39;t be logged anymore if this
          option is enabled.</p>
        </dd>

        <dt><strong>set logfile-suffix &quot;.%d%b%Y&quot;</strong></dt>

        <dd>
          <p>If keep-all-logs is 1, this setting will define the suffix of
          the logfiles. The default will result in a suffix like
          &quot;04May2000&quot;. &quot;%Y%m%d&quot; will produce the often
          used yyyymmdd format. Read the strftime manpages for more options.
          NOTE: On systems which don&#39;t support strftime, the default
          format will be used <strong>always</strong>.</p>
        </dd>
      </dl>
    </blockquote>

    <p><a name="sect1d"></a>1d. <strong>Console</strong></p>

    <blockquote>
      <dl>
        <dt><strong>set console &quot;mkcobxs&quot;</strong></dt>

        <dd>
          <p>This is the default console mode. It uses the same event flags
          as the log files do. The console channel is automatically set to
          your &quot;primary&quot; channel, which is set in the modules
          section of the config file. Masters can change their console
          channel and modes with the &#39;.console&#39; command.</p>
        </dd>
      </dl>
    </blockquote>

    <p><a name="sect1e"></a>1e. <strong>Files and directories</strong></p>

    <blockquote>
      <dl>
        <dt><strong>set userfile &quot;LamestBot.user&quot;</strong></dt>

        <dd>
          <p>Specify here the filename your userfile should be saved as.</p>
        </dd>

        <dt><strong>set pidfile &quot;pid.LamestBot&quot;</strong></dt>

        <dd>
          <p>Specify here the filename Eggdrop will save its pid to. If no
          pidfile is specified, pid.(botnet-nick) will be used.</p>
        </dd>

        <dt><strong>set sort-users 0</strong></dt>

        <dd>
          <p>If you want your userfile to be sorted upon saving, enable this
          setting. This causes the bot to use bit more CPU when saving the
          userfile.</p>
        </dd>

        <dt><strong>set help-path &quot;help/&quot;</strong></dt>

        <dd>
          <p>Specify here where Eggdrop should look for help files.
          Don&#39;t modify this setting unless you know what you&#39;re
          doing!</p>
        </dd>

        <dt><strong>set text-path &quot;text/&quot;</strong></dt>

        <dd>
          <p>Specify here where Eggdrop should look for text files. This is
          used for certain Tcl and DCC commands.</p>
        </dd>

        <dt><strong>set temp-path &quot;/tmp&quot;</strong></dt>

        <dd>
          <p>Set here a place to store temporary files.</p>
        </dd>

        <dt><strong>set motd &quot;text/motd&quot;</strong></dt>

        <dd>
          <p>The MOTD (Message Of The day) is displayed when people dcc chat
          or telnet to the bot. Look at doc/text-substitutions.doc for
          options.</p>
        </dd>

        <dt><strong>set telnet-banner &quot;text/banner&quot;</strong></dt>

        <dd>
          <p>This banner will be displayed on telnet connections. Look at
          doc/text-substitutions.doc for options.</p>
        </dd>

        <dt><strong>set userfile-perm 0600</strong></dt>

        <dd>
          <p>This specifies what permissions the user, channel, and notes
          files should be set to. The octal values are the same as for the
          chmod system command.</p>

          <p>To remind you:</p>
<pre>
           u  g  o           u  g  o           u  g  o
     0600  rw-------   0400  r--------   0200  -w-------    u - user
     0660  rw-rw----   0440  r--r-----   0220  -w--w----    g - group
     0666  rw-rw-rw-   0444  r--r--r--   0222  -w--w--w-    o - others
</pre>

          <p>Note that the default 0600 is the most secure one and should
          only be changed if you need your files for shell scripting or
          other external applications.</p>
        </dd>

        <dt><strong>set mod-path &quot;modules/&quot;</strong></dt>

        <dd>
          <p>This path specifies the path were Eggdrop should look for its
          modules. If you run the bot from the compilation directory, you
          will want to set this to &quot;&quot;. If you use &#39;make
          install&#39; (like all good kiddies do ;), this is a fine default.
          Otherwise, use your head :).</p>
        </dd>
      </dl>
    </blockquote>

    <p><a name="sect1f"></a>1f. <strong>Botnet, DCC and network</strong></p>

    <p>Settings in this section should be unimportant for you until you
    deal with botnets (multiple Eggdrops connected together to maximize
    efficiency). You should read <a href="botnet.html">Botnet Sharing and
    Linking</a> before modifying these settings.</p>

    <blockquote>
      <dl>
        <dt><strong>set botnet-nick &quot;LlamaBot&quot;</strong> (disabled
        by default)</dt>

        <dd>
          <p>If you want to use a different nickname on the botnet than you
          use on IRC (i.e. if you&#39;re on an un-trusted botnet), un-comment
          this line and set it to the nick you would like to use.</p>
        </dd>

        <dt><strong>listen &lt;port&gt; &lt;mode&gt;</strong></dt>

        <dd>
          <p>The listen command opens a telnet port by which you or other
          bots can interact with the Eggdrop by telneting in.</p>

          <p>Valid ports are typically anything between 1025 and 65535
          assuming the port is not already in use.</p>

          <p>Valid modes are &#39;all&#39;, &#39;bots&#39;, and
          &#39;users&#39;. You can assign special ports for users and bots,
          or one for all.</p>

          <p>Examples:</p>

          <p><strong>listen 3333 bots<br>
           listen 4444 users</strong></p>

          <p>Or:</p>

          <p><strong>listen 3333 all</strong></p>

          <p>There are more options for the listen command in
          <a href="tcl-commands.html">Eggdrop Tcl Commands</a>. Note that
          if you are running more than one bot on the same machine, you will
          want to space the telnet ports at LEAST 5 apart. 10 is even
          better.</p>
        </dd>

        <dt><strong>set remote-boots 2</strong></dt>

        <dd>
          <p>This setting defines whether or not people can boot users on
          the Eggdrop from other bots in your botnet. Valid settings are:</p>

          <p>0 - allow <strong>no</strong> outside boots<br>
           1 - allow boots from sharebots<br>
           2 - allow any boots</p>
        </dd>

        <dt><strong>set share-unlinks 1</strong></dt>

        <dd>
          <p>This setting prohibits Eggdrop to unlink from share bots if an
          remote bots tells so.</p>
        </dd>

        <dt><strong>set protect-telnet 0</strong></dt>

        <dd>
          <p>This setting will drop telnet connections not matching a known
          host. It greatly improves protection from IRCops, but makes it
          impossible to add hosts on limbo (NOIRC) bots or have NEW as a valid
          login.</p>
        </dd>

        <dt><strong>set dcc-sanitycheck 0</strong></dt>

        <dd>
          <p>This setting will make the bot ignore DCC chat requests which
          appear to have bogus information on the grounds that the user may
          have been trying to make the bot connect to somewhere that will get
          it into trouble, or that the user has a broken client (like mIRC
          tends to do), in which case the connect wouldn&#39;t work anyway.
          It&#39;s suggested that you turn this on.</p>
        </dd>

        <dt><strong>set ident-timeout 5</strong></dt>

        <dd>
          <p>This settings defines a time in seconds that the bot should
          wait before a dcc chat, telnet, or relay connection times out.</p>
        </dd>

        <dt><strong>set require-p 0</strong></dt>

        <dd>
          <p>Define here whether or not a +o user still needs the +p flag
          to dcc the bot.</p>
        </dd>

        <dt><strong>set open-telnets 0</strong></dt>

        <dd>
          <p>If you want people allow to telnet in and type &#39;NEW&#39;
          to become a new user, set this to 1. This is similar to the
          &#39;hello&#39; msg command. The protect-telnet setting must be
          set to 0 to use this.</p>
        </dd>

        <dt><strong>set stealth-telnets 0</strong></dt>

        <dd>
          <p>If you don&#39;t want Eggdrop to identify itself as an Eggdrop
          on a telnet connection, set this setting to 1. Eggdrop will display
          &#39;Nickname&#39; instead.</p>
        </dd>

        <dt><strong>set use-telnet-banner 0</strong></dt>

        <dd>
          <p>If you want Eggdrop to display a banner when telneting in, set
          this setting to 1. The telnet banner is set by &#39;set
          telnet-banner&#39;.</p>
        </dd>

         <dt><strong>set connect-timeout 15</strong></dt>

        <dd>
          <p>This settings defines a timeout in seconds how long the bot
          should wait for a dcc chat, telnet, relay, etc connection.</p>
        </dd>

        <dt><strong>set dcc-flood-thr 3</strong></dt>

        <dd>
          <p>Specify here the number of lines to accept from a user on the
          partyline within 10 seconds before they are considered to be
          flooding and therefore get booted.</p>
        </dd>

        <dt><strong>set telnet-flood 5:60</strong></dt>

        <dd>
          <p>Define here how many telnet connection attempts in how many
          seconds from the same host constitute a flood. The correct format
          is Attempts:Seconds.</p>
        </dd>

        <dt><strong>set paranoid-telnet-flood 1</strong></dt>

        <dd>
          <p>If you want telnet-flood to apply even to +f users, set this
          setting to 1.</p>
        </dd>

        <dt><strong>set resolve-timeout 15</strong></dt>

        <dd>
          <p>Set here the amount of seconds before giving up on
          hostname/address lookup (you might want to increase this if you
          are on a slow network).</p>
        </dd>
      </dl>
    </blockquote>

    <p><a name="sect1g"></a>1g. <strong>More advanced settings</strong></p>

    <blockquote>
      <dl>
        <dt><strong>set firewall &quot;!sun-barr.ebay:3666&quot;</strong></dt>

        <dd>
          <p>Set this to your socks host if your Eggdrop sits behind a
          firewall. If you use a Sun &quot;telnet passthru&quot; firewall,
          prefix the host with a &quot;!&quot;.</p>
        </dd>

        <dt><strong>set nat-ip &quot;127.0.0.1&quot;</strong></dt>

        <dd>
          <p>If you have a NAT firewall (you box has an IP in one of the
          following ranges: 192.168.0.0-192.168.255.255,
          172.16.0.0-172.31.255.255, 10.0.0.0-10.255.255.255 and your
          firewall transparently changes your address to a unique address
          for your box) or you have IP masquerading between you and the rest
          of the world, and /dcc chat,/ctcp chat or userfile sharing
          aren&#39;t working, enter your outside IP here. Do not enter
          anything for my-ip or my-hostname if you use this setting.</p>
        </dd>

        <dt><strong>set reserved-portrange 2010:2020</strong></dt>

        <dd>
          <p>If you want all dcc file transfers to use a particular
          portrange either because you&#39;re behind a firewall, or for other
          security reasons, set it here.</p>
        </dd>

        <dt><strong>set ignore-time 15</strong></dt>

        <dd>
          <p>Set the time in minutes that temporary ignores should last.</p>
        </dd>

        <dt><strong>set hourly-updates 00</strong></dt>

        <dd>
          <p>Define here what Eggdrop considers &#39;hourly&#39;. All calls
          to it, including such things as note notifying or userfile saving,
          are affected by this.</p>

          <p>Example:</p>

          <blockquote>
            <p>set hourly-updates 15</p>
          </blockquote>

          <p>The bot will save its userfile 15 minutes past every hour.</p>
        </dd>

        <dt><strong>set owner &quot;MrLame, MrsLame&quot;</strong></dt>

        <dd>
          <p>Un-comment this line and set the list of owners of the bot.
          You NEED to change this setting.</p>
        </dd>

        <dt><strong>set notify-newusers &quot;$owner&quot;</strong></dt>

        <dd>
          <p>Who should a note be sent to when new users are learned?</p>
        </dd>

        <dt><strong>set default-flags &quot;hp&quot;</strong></dt>

        <dd>
          <p>Enter the flags that all new users should get by default. See
          &#39;.help whois&#39; on the partyline for a list of flags and
          their descriptions.</p>
        </dd>

        <dt><strong>set whois-fields &quot;url birthday&quot;</strong></dt>

        <dd>
          <p>Enter all user-defined fields that should be displayed in a
          &#39;.whois&#39;. This will only be shown if the user has one of
          these extra fields. You might prefer to comment this out and use
          the userinfo1.0.tcl script which provides commands for changing
          all of these.</p>
        </dd>

        <dt><strong>set die-on-sighup 0</strong></dt>

        <dd>
          <p>Enable this setting if you want your Eggdrop to die upon
          receiving a SIGHUP kill signal. Otherwise, the Eggdrop will just
          save its userfile and rehash.</p>
        </dd>

        <dt><strong>set die-on-sigterm 0</strong></dt>

        <dd>
          <p>Enable this setting if you want your Eggdrop to die upon
          receiving a SIGTERM kill signal. Otherwise, the Eggdrop will just
          save its userfile and rehash.</p>
        </dd>

        <dt><strong>unbind dcc n tcl *dcc:tcl</strong></dt>
        <dt><strong>unbind dcc n set *dcc:set</strong></dt>

        <dd>
          <p>Comment these two lines if you wish to enable the .tcl and .set
          commands. If you select your owners wisely, you should be okay
          enabling these.</p>
        </dd>

        <dt><strong>set must-be-owner 1</strong></dt>

        <dd>
          <p>If you enable this setting, only permanent owners (owner
          setting) will be able to use .tcl and .set. Moreover, if you want
          to only let permanent owners use .dump, then set this to 2.</p>
        </dd>

        <dt><strong>unbind dcc n simul *dcc:simul</strong></dt>

        <dd>
          <p>Comment out this line to add the &#39;simul&#39; partyline
          command (owners can manipulate other people on the party line).
          Please select owners wisely and use this command ethically!</p>
        </dd>

        <dt><strong>set max-dcc 50</strong></dt>

        <dd>
          <p>Set here the maximum number of dcc connections you will allow.
          You can increase this later, but never decrease it.</p>
        </dd>

        <dt><strong>set enable-simul 1</strong></dt>

        <dd>
          <p>Enable this setting if you want to enable the &#39;dccsimul&#39;
          Tcl command.</p>
        </dd>

        <dt><strong>set allow-dk-cmds 1</strong></dt>

        <dd>
          <p>Enable this setting if you want +d &amp; +k users to use
          commands bound as -|-.</p>
        </dd>

        <dt><strong>set dupwait-timeout 5</strong></dt>

        <dd>
          <p>If your Eggdrop rejects bots that actually have already
          disconnected from another hub, but the disconnect information has
          not yet spread over the botnet due to lag, use this setting. The
          bot will wait dupwait-timeout seconds before it checks again and
          then finally reject the bot.</p>
        </dd>
      </dl>
    </blockquote>

    <p><a name="sect1h"></a>1h. <strong>Modules</strong></p>

    <blockquote>
      <p>After the core settings, you should start loading modules. Modules
      are loaded by the command &quot;loadmodule &lt;module&gt;&quot;.
      Eggdrop looks for modules in the directory you specified by the
      module-path setting in the files and directories section.</p>

      <p>Please note that for different configurations, different modules
      are needed. Four examples:</p>

      <dl>
        <dt><strong>Channel Security Bot</strong></dt>

        <dd>
          <p>This bot needs the channels, blowfish, console, dns, irc, and
          (if you like) ctcp modules loaded. More is not needed and makes
          the bot slower.</p>
        </dd>

        <dt><strong>Public IRC Bot</strong></dt>

        <dd>
          <p>A public bot should have all modules available loaded since
          they provide all functions for everyday use.</p>
        </dd>

        <dt><strong>Secure Filesys Bot</strong></dt>

        <dd>
          <p>This bot needs all normal IRC operating modules, but not the
          notes, seen, ctcp or share modules.</p>
        </dd>

        <dt><strong>Limbo Bot</strong></dt>

        <dd>
          <p>A limbo bot (serves as a botnet hub outside IRC) just needs the
          channels, console, dns, and maybe notes or share modules loaded.
          Of course, blowfish needs to be loaded here, too.</p>
        </dd>
      </dl>
    </blockquote>

    <p><a name="sect1i"></a>1i. <strong>Scripts</strong></p>

    <blockquote>
      <p>The scripts section should be placed at the end of the config file.
      All modules should be loaded and their variables should be set at this
      point.</p>

      <p><strong>source scripts/script.tcl</strong></p>

      <p>This line loads script.tcl from the scripts directory inside your
      Eggdrop&#39;s directory. All scripts should be put there, although you
      can place them where you like as long as you can supply a fully
      qualified path to them.</p>

      <p>Some commonly loaded scripts are alltools.tcl and action.fix.tcl.</p>

      <p>The appropriate source lines are:</p>

      <p><strong>source scripts/alltools.tcl<br>
      source scripts/action.fix.tcl</strong></p>
      <hr>

    <p><em>Copyright &copy; 1997 Robey Pointer<br>
     Copyright &copy; 1999, 2000, 2001, 2002 <a href="http://www.eggheads.org/">
     Eggheads Development Team</a></em></p>
  </body>
</html>
